package com.wjw.java.games.tankgame4;

import java.util.Vector;

/**
 * 敌人的坦克：
 * 为了让敌人的坦克随机方向自由移动,需要将EnemyTank当做一个线程
 */
public class EnemyTank extends Tank implements Runnable{

    //射击线程集合
    private Vector<Shot> shots = new Vector<>();


    //让敌人的坦克自由移动
    @Override
    public void run() {

        while (true){
            //如果敌人没有子弹了,且活着
            if(isLive() && shots.size() < 1){
                Shot s = null;
                //生成子弹的方向
                switch (getDirection()){
                    case 0://上
                        s = new Shot(getX() + 20,getY(),0);
                        break;
                    case 1://右
                        s = new Shot(getX() + 60,getY() + 20,1);
                        break;
                    case 2://下
                        s = new Shot(getX() + 20,getY() +60,2);
                        break;
                    case 3://左
                        s = new Shot(getX(),getY() + 20,3);
                        break;
                }
                shots.add(s);//加入到集合
                new Thread(s).start();//启动线程
            }//if

            //根据坦克的方向
            switch (getDirection()){
                case 0://上
                    //让坦克在一个方向走30步,休眠一下,在换方向行驶
                    for (int i = 0; i < 30; i++) {
                        if(getY() > 0){
                            moveUp();
                        }
                        //休眠一会
                        try {
                            Thread.sleep(50);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                    break;
                case 1://右
                    //让坦克在一个方向走30步,休眠一下,在换方向行驶
                    for (int i = 0; i < 30; i++) {
                        if(getX()+60 < 1000){
                            moveRight();
                        }
                        //休眠一会
                        try {
                            Thread.sleep(50);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                    break;
                case 2://下
                    //让坦克在一个方向走30步,休眠一下,在换方向行驶
                    for (int i = 0; i < 30; i++) {
                        if(getY()+60 < 750){
                            moveDown();
                        }
                        //休眠一会
                        try {
                            Thread.sleep(50);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                    break;
                case 3://左
                    //让坦克在一个方向走30步,休眠一下,在换方向行驶
                    for (int i = 0; i < 30; i++) {
                        if(getX() > 0){
                            moveLeft();
                        }
                        //休眠一会
                        try {
                            Thread.sleep(50);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                    break;
            }//switch

            //然后：随机改变方向
            int direct = (int) (Math.random() * 4);//获取0-3随机数
            setDirection(direct);
            //坦克死亡时,退出循环
            if(!isLive()){
               break;
            }
        }
    }

    //getter、setter、构造器
    public Vector<Shot> getShots() {
        return this.shots;
    }

    public void setShots(Vector<Shot> shots) {
        this.shots = shots;
    }

    public EnemyTank(int x, int y) {
        super(x, y);
        System.out.println("初始化EnemyTank敌人的坦克...");
    }
}
